從今天開始呢,我們會開始進入『資料庫』的領域。
資料庫可以說是後端工程師,每天都會跟他泡茶聊天維繫感情的領域。
而資料庫到現今的發展,也逐漸有幾家獨霸的廠商,
也根據不同的應用方向,發展出所謂的『NoSQL』這種特別的資料庫類型,
但 NoSQL 偏向前端的應用較多,就不在此深入探討,
今天會介紹四個筆者認為目前使用上較常見的資料庫系統:
『MySQL』, 『PostgreSQL』,『Microsoft SQL Server』,『Oracle Database』,
以及幾個簡單的名詞解釋
query : 指的是對資料庫作查詢時的語句
transaction : 交易功能,有些流程會一次綁定多個 query ,而 transaction 就是設定說,一定要每個 query 都正確才會全部 query 被真正執行,如果有任何錯誤,就全部 query 執行結果都捨棄。
rollback : 取消這次所有的 SQL 查詢更新結果

隆重介紹,鐺鐺鐺,幾乎是現在資料庫系統前兩把交椅的 MySQL~
MySQL 會這麼風靡的原因,主要是因為他有下列幾項優點:
因為開放原始碼的關係,
一直會有來自社群的更新反饋,
驅使 MySQL 的官方持續強化這個資料庫軟體。
且使用此資料庫軟體的成本極低。
相容於各個不同的程式語言、作業系統
不管是哪種語言、作業系統的工程師,
都能快速的簡單設定後,開始使用 MySQL。
具有『多執行緒』,能充分利用資源運算
簡單來說,他能同時處理好幾份工作,
不會讓電腦有閒置的資源。
社群活躍,資源眾多
開發階段遇到的任何問題,
幾乎都可以在 Google 上找到答案,
或是各大技術社群都會提供協助,
或是能在回報後,一定的時間內更新。
但相對於優點,他也有以下的缺點
性能較差,適合中小型應用程式
MySQL 的免費公開版性能一直是個罩門,
對於中小型應用程式綽綽有餘,
但當使用者人數和流量漸升,勢必是個問題。
不過在 8.0 更新後,會相較舊版提升 1 倍以上的效能,
因此直得觀察此項缺點的後續發展。
安全性
MySQL 的安全機制相較其他資料庫是較薄弱的,
機制上設定較為複雜,且非標準化機制。
最後要提醒大家,MySQL 跟 MySQL Workbench 不一樣喔!!
很多新手都會搞混這兩者,並卡很久。
MySQL 是沒有介面的,
因此是透過像 MySQL Workbench 或是 PHPmyAdmin 這種軟體,
用介面的方式,操作 MySQL 資料庫,
非常重要,請各位讀者一定要牢牢記住喔!!

PostgreSQL 是最常拿來和 MySQL 比較的資料庫系統,
因為他有和 MySQL 高度重疊的特性,
因此使用上來說,其實如果沒有特別的需求,
筆者認為兩者都是可以隨意選擇的資料庫系統( 所以不用寫了..? ),
當然沒有,還是會跟各位介紹優缺點喔!
優點:
更加開放,貼近社群
跟 MySQL 相同,都為開源軟體,
但 Postgre 的設計上又更加以社群需求為導向去設計,
商業應用導向
設計更新皆以商業應用導向為主,
像是最重要的 『transaction 』,資料的交易機制,
擁有更嚴格的測試驗證和設計機制。
Store Procedure 和 View 功能強化
Store Procedure 是類似資料庫裡的『函式』功能,
可以在資料庫裡撰寫邏輯。
View 則是把資料庫的複雜查詢語句,直接儲存起來,
當做一個 table ( 表 )。
在這種複雜的應用上,具有比 MySQL 更強的機制
地理結構資料類型
PostgreSQL 非常適合製作有地理相關功能的應用程式,
除了提供專屬的資料類型,
也提供相關的資料庫函式,非常方便
缺點:
結構龐大
PostgreSQL 因為有許多商業性的功能應用,
因此容量大小上較為巨大,
可能對於較小型的伺服器是個負擔。
複雜的查詢會導致效能低落
對於比較複雜語句的查詢,會有較低的效能,
主要是因為 PostgreSQL 軟體本身結構的緣故。

Microsoft SQL Server 是偉大的微軟公司推出的資料庫系統軟體,
我們先別說他遠到不行的親戚 Access (或許連親戚都不算?)
微軟推出的這個資料庫軟體,非常微軟,
也就是不是微軟相關的開發應用,根本不能用,或是用不起來,
但鑒於 C# 的聲名遠播,筆者仍認為這是很重要常用的 SQL 軟體。
優點:
工具整合性
微軟生態系的雙面刃,
對於微軟相關的開發工具都有非常好的整合應用,
不管是報表、商業智慧( BI ) 相關的功能,
或是和 C# 相關程式的對接,
都非常的流暢好用。
使用的學習曲線低
Ms SQL Server 的學習曲線較其餘兩者低,
較不需要一些繁瑣的設定,
且自帶資料庫介面操作工具,
新手也能快速開始使用。
3 嚴格的交易安全與控制
對於資料庫 transaction 的安全控制非常良好,
畢竟是大軟體商經營的DB 伺服器,因此這部分算是基本盤。
缺點:
封閉的使用和開發環境
基本上是屬於原始碼封閉的開發環境,
因此社群上的討論度也略低,
且雖然在 2017 年推出可以在 Linux 上運行的版本,
但基本上,穩定的商用版本還是限定在 Windows 平台上為主。
較為笨重
由於對於資料庫技術不是微軟 Team 主打的方向,
因此使用了稍嫌龐大、資源吃重的資料庫引擎,
會造成伺服器本身的資源負載量較大。
基本上,除了使用 C# 微軟的技術外,
其他不太推薦使用 MS SQL Server,
作為應用程式的資料庫。

Oracle Database 是甲骨文公司推出的資料庫系統,
基本上,是純粹針對公司行號等大型公司推出的資料庫,
因此在一般新創、個人開發上,極少使用 Oracle 資料庫。
但會是較有歷史的組織,例如銀行、公部門,會蠻有機會看見的資料庫。
優點:
極高的安全性
由於針對大型公司設計的緣故,
在安全性機制的設定上,
具有最高認證級別的ISO標準認證。
效能出色
在從事各種大型運算,或查詢上,
是經過 TPC 組織( 專門執行商用負載 )的認證,
效能可以說是笑冠全主流資料庫系統。
功能齊全、強大
具有多種資料儲存格式可以選擇,
還有各式能夠自行制定的功能,
例如同義詞、套件等等不同的模塊。
缺點:
使用成本昂貴
基本上免費版是不太能用的,
因此大部分都是在公司使用付費版,
而付費版的價格較為高昂,
相對應的硬體設施也有一定的要求。
學習成本高
Oracle 是一個比較有技術含量的資料庫系統,
對於新手來說,要快速學會核心的應用比較吃力些,
需要較為 Senior 的技術開發者協助。
基本上資料庫的選擇,
也是根據讀者你目前的需求,
去規劃設計,因此也沒有用哪個一定好唷~
( 但筆者是開放派的啦 XD
如果有任何問題,或是指證文中的錯誤,歡迎寄信給我或留言在下面喔~
參考資料:
不同資料庫的比較 - SQL Server vs Oracle and MySQL
SQL Server、MySQL、Oracle三種資料庫的優缺點比較,這一文夠了 原文網址:https://itw01.com/8DZ3EBL.html
PostgreSQL vs MySQL vs SQL Server vs Oracle